<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Document</title>
</head>
<body>
  <div><h1 id="node-js-">Node.js 课程介绍</h1>
<h2 id="labdoc-header-0">一、实验介绍</h2>
<h3 id="labdoc-header-1">1.1 实验内容</h3>
<p>本次实验将向大家介绍Node.js相关的基本概念，包括REPL、模块、包等基础概念。带领大家进入Node.js的世界！</p><h3 id="labdoc-header-2">1.2 实验知识点</h3>
<ul>
<li>Node.js运行环境</li>
<li>REPL</li>
<li>模块(module)和包(package)</li>
<li>包管理工具npm</li>
</ul>
<h3 id="labdoc-header-3">1.3 实验环境</h3>
<p>本实验环境采用Ubuntu Linux 环境，实验中会用到环境或软件：</p><ul>
<li>Xfce终端</li>
<li>Node.js v4.2.1</li>
<li>gedit/vim：文本编辑<h2 id="labdoc-header-4">二、实验步骤</h2>
</li>
</ul>
<h3 id="labdoc-header-5">2.1 Node.js介绍</h3>
<h4 id="2-1-1-">2.1.1 概述</h4>
<p>Node.js是基于Chrome JavaScript运行时建立的一个平台，实际上它是对Google Chrome V8引擎进行了封装，它主要用于创建快速的、可扩展的网络应用。Node.js采用事件驱动和非阻塞I/O模型，使其变得轻量和高效，非常适合构建运行在分布式设备的数据密集型的实时应用。</p><p>对运行于浏览器的JavaScript来说，浏览器就是JavaScript代码的解析器，而Node.js则是服务器端的JavaScript代码解析器，存在于服务器端的JavaScript代码由Node.js来解析和运行。</p><p>JavaScript解析器只是JavaScript代码运行的一种环境，浏览器是JavaScript运行的一种环境，浏览器为JavaScript提供了操作DOM对象和window对象等的接口。Node.js也是JavaScript运行的一种环境，Node.js为JavaScript提供了操作文件、创建HTTP服务、 创建TCP/UDP服务等的接口，所以Node.js可以完成其他后端开发语言（如Python、PHP等）能完成的工作。</p><h4 id="2-repl">2. 交互式运行环境：REPL</h4>
<p>Node.js提供了一个交互式运行环境，通过这个环境，可以立即执行JavaScript代码块，使用方法类似于Chrome浏览器中Firebug插件的Console。</p><p>双击虚拟机桌面的Xfce终端，进入Linux终端：</p><p>输入<code>node</code>或<code>nodejs</code>进入Node.js的交互式运行环境（老版本的Node.js，不支持<code>node</code>命令，只能使用<code>nodejs</code>命令），Ctrl+d组合键可以退出此环境。</p><p>查看系统中安装的Node.js版本：</p><pre><code class="hljs ruby">$ <span class="hljs-keyword">node</span> <span class="hljs-title">-v</span>
</code></pre><p>测试Node.js控制台输出：</p><pre><code class="hljs coffeescript"><span class="hljs-meta">$</span><span class="bash"> node</span>
<span class="hljs-meta">&gt;</span><span class="bash"> <span class="hljs-built_in">console</span>.log(<span class="hljs-string"><span class="hljs-string">'bestqd'</span></span>);</span>
</code></pre><p>通过交互式环境也可以运行JavaScript文件。</p><p>在虚拟机桌面新建一个JavaScript文件(桌面右键=&gt;从模板创建=&gt;空白文件)，命名为test.js，然后使用gvim(其他编辑器也可以)打开新建的文件，输入如下代码并保存：</p><pre><code class="hljs javascript"><span class="hljs-built_in"><span class="hljs-keyword">var</span></span> <span class="hljs-built_in">num</span> = <span class="hljs-number"><span class="hljs-number">100</span></span>;

<span class="hljs-built_in">console</span>.<span class="hljs-built_in">log</span>(<span class="hljs-built_in">num</span>);
<span class="hljs-built_in">console</span>.<span class="hljs-built_in">log</span>(<span class="hljs-built_in">num</span> + <span class="hljs-number"><span class="hljs-number">100</span></span>);
</code></pre><p>通过Node.js交互式环境运行文件：</p><pre><code class="hljs ruby"><span class="hljs-meta">$</span><span class="bash"> <span class="hljs-built_in">cd</span> Desktop</span>
<span class="hljs-meta">Desktop$</span><span class="bash"> node test.js</span>
</code></pre><h3 id="labdoc-header-6">三、Node.js模块和包</h3>
<h4 id="1-">1. 模块</h4>
<p>Node.js官方提供了很多模块，这些模块分别实现了一种功能，如操作文件的模块<code>fs</code>，构建http服务的模块<code>http</code>等，每个模块都是一个JavaScript文件，当然你也可以自己编写模块。</p><h4 id="2-">2. 包</h4>
<p>包可以将多个具有依赖关系的模块组织在一起，封装多个模块，以方便管理。Node.js采用了CommonJS规范，根据CommonJS规范规定，一个JavaScript文件就是一个模块，而包是一个文件夹，包内必须包含一个JSON文件，命名为package.json。一般情况下，包内的bin文件夹存放二进制文件，包内的lib文件夹存放JavaScript文件，包内的doc文件夹存放文档，包内的test文件夹存放单元测试。package.json文件中需要包含的字段及包的使用，后面的实验再做详细介绍。</p><h4 id="3-npm-">3. npm包管理工具</h4>
<p>npm是Node.js的包管理工具，npm定义了包依赖关系标准，我们使用npm来下载第三方包和管理本地下载的第三方包。</p><h2 id="labdoc-header-7">三、实验总结</h2>
<p>本次实验只介绍了一些最基本的内容，想要学到更多的东西，快开始下一个实验吧！</p><h2 id="labdoc-header-8">四、课后习题</h2>
<p>本次课程只向大家介绍了Node.js相关的基本概念，但并没有带大家在自己的电脑上安装配置Node.js开发环境，现在就把这个任务交给你自己完成。可以参考以下教程：<br><a href="https://cnodejs.org/topic/5338c5db7cbade005b023c98" target="_blank">快速搭建 Node.js 开发环境以及加速 npm</a></p><h2 id="labdoc-header-9">五、参考链接</h2>
<ul>
<li><a href="http://nodejs.cn/" target="_blank">Node.js中文文档</a></li>
</ul>
</div>
</body>
</html>